package com.camelot.boot.server;
import com.camelot.boot.module.system.controller.admin.ai.DeepSeekRequest;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import okhttp3.*;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class Test {
    private static final String API_KEY = "sk-cc3f800cb24b4470871afd2923cdd571"; // 替换为你的API密钥
    private static final String API_URL = "https://api.deepseek.com/chat/completions";
    public static void main(String[] args) {
        String pdfPath = "D:\\new1\\ruoyi-vue-pro\\boot-server\\src\\main\\resources\\resume.pdf";

            // 创建请求对象
            DeepSeekRequest request = new DeepSeekRequest();
            request.setModel("deepseek-reasoner"); // 指定推理模型

            // 添加对话消息
            List<Message> messages = new ArrayList<>();
            messages.add(new Message("system", "请从以下简历提取信息，严格返回 JSON 格式：\n" +
                    "            {\n" +
                    "                \"name\": \"姓名\",\n" +
                    "                \"phone\": \"电话\",\n" +
                    "                \"email\": \"邮箱\",\n" +
                    "                \"education\": [\"学校 | 学历 | 时间\"],\n" +
                    "                \"experience\": [\"公司 | 职位 | 时间\"]\n" +
                    "            }\n" +
                    "            简历内容："));
        String temp="基本信息\n" +
                "孟飞\n" +
                "男 | 30 岁 | 10 年经验 | 大专 | 18019961689 | 630945930@qq.com | 已婚已育 | 现居合肥\n" +
                "| 薪资：面议 | 意向岗位\n" +
                "目前在职，考虑合适新机会\n" +
                "教育背景\n" +
                "2010/09 - 2013/06 合肥三联学院 大专 - 网络系统管理\n" +
                "工作经历\n" +
                "2012/07 - 2012/12 合肥百脑汇 弱电(实习生)\n" +
                "工作内容：\n" +
                "负责网络布线和监控安装、电脑组装等\n" +
                "2013/04 - 2014/05 合肥阳光消化病医院【网络部】 前端开发人员\n" +
                "工作内容：\n" +
                "网站的规划、后端接口设计；\n" +
                "企业网站搭建\n" +
                "网站 seo 和浏览器兼容性优化\n" +
                "2014/10 - 2018/04 合肥识微数字科技有限公司 全栈，项目负责人\n" +
                "工作内容：\n" +
                "负责项目整体规划、功能设计、需求分析、程序架构和开发、人员安排；\n" +
                "项目更近、系统优化和技术攻关；\n" +
                "有接近 20 多个项目经验。\n" +
                "2018/05 - 至今 合肥育达信息技术有限公司 全栈，项目负责人\n" +
                "工作内容：\n" +
                "负责项目整体规划、功能设计、需求分析、程序架构和开发、人员安排；\n" +
                "项目更近、系统优化和技术攻关；\n" +
                "有多个成熟的产品使用中。\n" +
                "项目经历\n" +
                "2013/04 - 2014/05 合肥阳光消化病医院官网 web、php\n" +
                "项目介绍\n" +
                "医院官网\n" +
                "1、web 页面编写，织梦 cms 改动\n" +
                "2、js，jq 的编写，ie 兼容性调试\n" +
                "2014/10 - 2015/06 模仿“生活半径”的外卖系统 web，php\n" +
                "项目介绍\n" +
                "在阜阳的外卖系统\n" +
                "我的职责\n" +
                "b5e490604df989ab1nB_2ti5FlpZxZG4UPKcR-eing~~\n" +
                "1、基于 lbs，使用 thinkphp3.2 编写用户 pc 和移动端页面\n" +
                "2、mysql 优化\n" +
                "3、页面兼容性调试\n" +
                "4、测试、实施和优化\n" +
                "2015/05 - 2015/07 小说 App web，php\n" +
                "项目介绍\n" +
                "小说 App 开发\n" +
                "我的职责\n" +
                "1、基于 angularjs1 和 ionic 开发的混合 App\n" +
                "2、后端系统和采集\n" +
                "3、页面兼容性调试\n" +
                "4、测试、实施和优化\n" +
                "2015/11 - 2016/01 安徽动高高铁离线点餐系统 web\n" +
                "项目介绍\n" +
                "驻点开发安徽动高高铁离线点餐系统，功能：离线点餐和娱乐\n" +
                "我的职责\n" +
                "1、内部框架搭建 web 框架 App\n" +
                "2、机型兼容性调试优化和服务端接口对接\n" +
                "2016/06 - 2016/09 合肥科技馆网站系统 web，php\n" +
                "项目介绍\n" +
                "合肥科技馆官网和后台系统，编辑人员通过后台编写图文信息，上级预约和审核预约。通过公众号进行扫码验\n" +
                "证。\n" +
                "我的职责\n" +
                "1、需求分析、文档编写、实施文档\n" +
                "2、人员安排和系统开发测试\n" +
                "3、系统性能优化\n" +
                "2016/12 - 2017/06 中国科学技术大学先进技术研究院官\n" +
                "网\n" +
                "web，php\n" +
                "项目介绍\n" +
                "中国科学技术大学先进技术研究院官网开发工作\n" +
                "我的职责\n" +
                "1、和科大老师进行对接需求\n" +
                "2、页面编写和人员安排\n" +
                "3、页面优化\n" +
                "2016/10 - 2017/04 桩点时间 web\n" +
                "项目介绍\n" +
                "基于 lbs 微信公众号扫码充电，实现附近、地图选桩、扫码充电功能\n" +
                "我的职责\n" +
                "1、web 页面\n" +
                "3、系统性能优化\n" +
                "2016/12 - 2017/07 火花桌面端 nodejs\n" +
                "项目介绍\n" +
                "通过提供基于科学可视化内容的备课平台\n" +
                "我的职责\n" +
                "1、部分 web 页面编写、技术难点攻克\n" +
                "2、视频点播相关技术（ffmpeg）\n" +
                "3、系统性能优化\n" +
                "2017/06 - 2018/02 LawRobot php、Python、web\n" +
                "项目介绍\n" +
                "智能法务系统开发，提供在线智能交流和人工付费法律咨询\n" +
                "我的职责\n" +
                "1、需求分析、程序架构和开发、人员安排\n" +
                "2、App、数据库、api 接口设计和开发\n" +
                "5、系统优化和迭代\n" +
                "2017/12 - 2018/04 快递员小扁担 php、web\n" +
                "项目介绍\n" +
                "致力于提供多元化的最后一公里服务采用物联网 互联网数据等技术，提高快递投送效率\n" +
                "我的职责\n" +
                "1、需求分析、程序架构和开发、人员安排\n" +
                "2、数据库、api 接口设计和开发\n" +
                "3、大数据量短信发短信队列处理\n" +
                "4、web 模块架构和移动端接口对接\n" +
                "5、系统优化和迭代\n" +
                "2018/05 - 2018/08 考试接口开发 php\n" +
                "项目介绍\n" +
                "考试客户端接口开发\n" +
                "我的职责\n" +
                "1、需求分析、程序架构和开发、人员安排\n" +
                "2、数据库设计\n" +
                "3，使用 hyperf 框架开发 api 接口开发\n" +
                "4、并发测试和实施\n" +
                "5、系统优化和迭代";
            messages.add(new Message("user", temp));
            request.setMessages(messages);

            // 发送请求并处理响应
            String response = sendRequest(request);
            System.out.println("Response: " + response);
        }

        private static String sendRequest(DeepSeekRequest request) {
            OkHttpClient client = new OkHttpClient.Builder()
                    .connectTimeout(30, TimeUnit.SECONDS)
                    .readTimeout(60, TimeUnit.SECONDS)
                    .build();
            Gson gson = new Gson();

            // 将请求对象转换为JSON字符串
            String jsonRequest = gson.toJson(request);

            // 创建HTTP请求
            RequestBody body = RequestBody.create(jsonRequest, MediaType.get("application/json; charset=utf-8"));
            Request httpRequest = new Request.Builder()
                    .url(API_URL)
                    .post(body)
                    .addHeader("Authorization", "Bearer " + API_KEY)
                    .addHeader("Content-Type", "application/json")
                    .build();

            try (Response response = client.newCall(httpRequest).execute()) {
                if (response.isSuccessful()) {
                    return response.body().string();
                } else {
                    return "Error: " + response.code() + " " + response.message();
                }
            } catch (IOException e) {
                e.printStackTrace();
                return "Error: " + e.getMessage();
            }
        }

        // 请求对象类
        static class DeepSeekRequest {
            private String model;
            private List<Message> messages;

            public String getModel() {
                return model;
            }

            public void setModel(String model) {
                this.model = model;
            }

            public List<Message> getMessages() {
                return messages;
            }

            public void setMessages(List<Message> messages) {
                this.messages = messages;
            }
        }

        // 消息类
        static class Message {
            private String role;
            private String content;

            public Message(String role, String content) {
                this.role = role;
                this.content = content;
            }

            public String getRole() {
                return role;
            }

            public void setRole(String role) {
                this.role = role;
            }

            public String getContent() {
                return content;
            }

            public void setContent(String content) {
                this.content = content;
            }


    }
}
